package com.dowsure.apisaas.model;

import com.dowsure.apisaas.annotation.RequestParamValidated;
import com.dowsure.apisaas.util.DowsureDateUtils;
import lombok.Data;

import java.math.BigDecimal;

/**
 * @program: apisaas-sdk
 * @description: 传输还款数据请求参数
 * @author: Dowsure
 * @create: 2022-02-15 17:44
 **/
@Data
public class RepaymentRequestParams {

    /**
     * Dowsure 卖家申请单编号
     */
    @RequestParamValidated(required = true, msg = "Dowsure 卖家申请单编号", maxLen = 32)
    private String applicationCode;

    /**
     * 当前期数
     */
    @RequestParamValidated(required = true, msg = "当前期数")
    private Integer currentTerm;

    /**
     * 用户侧贷款编号
     */
    @RequestParamValidated(required = true, msg = "用户侧贷款编号", maxLen = 32)
    private String loanCode;

    /**
     * 用户侧贷款合同编号
     */
    @RequestParamValidated(msg = "用户侧贷款合同编号", maxLen = 32)
    private String loanContractNo;

    /**
     * 还款流水号
     */
    @RequestParamValidated(required = true, msg = "还款流水号", maxLen = 32)
    private String serialNo;

    /**
     * 应还本金额
     */
    @RequestParamValidated(required = true, msg = "应还本金额")
    private BigDecimal paymentPrincipal;

    /**
     * 实际还本金额
     */
    @RequestParamValidated(required = true, msg = "实际还本金额")
    private BigDecimal realPaymentPrincipal;

    /**
     * 应还利息金额
     */
    @RequestParamValidated(required = true, msg = "应还利息金额")
    private BigDecimal paymentInterest;

    /**
     * 实际还利息金额
     */
    @RequestParamValidated(required = true, msg = "实际还利息金额")
    private BigDecimal realPaymentInterest;

    /**
     * 应还逾期利息
     */
    @RequestParamValidated(required = true, msg = "应还逾期利息")
    private BigDecimal paymentOverdueInterest;

    /**
     * 实际还逾期利息
     */
    @RequestParamValidated(required = true, msg = "实际还逾期利息")
    private BigDecimal realPaymentOverdueInterest;

    /**
     * 还款总金额
     */
    @RequestParamValidated(required = true, msg = "还款总金额")
    private BigDecimal dealAmount;

    /**
     * 剩余本金余额
     */
    @RequestParamValidated(required = true, msg = "剩余本金余额")
    private BigDecimal surplusPrincipal;

    /**
     * 应还还款日期
     */
    @RequestParamValidated(required = true, msg = "应还还款日期", format = DowsureDateUtils.YYYYMMDDHHMMSS)
    private String dealDate;

    /**
     * 实际还款日期
     */
    @RequestParamValidated(required = true, msg = "实际还款日期", format = DowsureDateUtils.YYYYMMDDHHMMSS)
    private String realDate;
}
